#include #include #include #include using namespace std; const int max_v = 100000 + 5; int v; vector adj_list[max_v]; vector rev_adj_list[max_v]; bool visited[max_v]; int scc[max_v]; void dfs_rev(int i, stack& s) { if(visited[i]) return; visited[i] = true; for(int j=0; j reverse_dfs_order() { stack s; for(int i=0; i s = reverse_dfs_order(); // DFS graph in the computed order int component = 0; for(int i=0; i